package com.thread.threadfirst.studyThread4;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

/**
 * 13、parallelStream（多线程的Stream）
 * 一个任务分配给多个线程去执行，提升效率。
 */
public class T_ParallelStream {
    public static void main(String[] args) {
        List<Integer> nums = new ArrayList<>();
        Random r = new Random();
        for (int i = 0; i < 1000; i++) nums.add(1000000 + r.nextInt(1000000));

        //第一种：streamAPI 非多线程的
        long start = System.currentTimeMillis();
        nums.forEach(o -> isPrime(o));  //写法1
        long end = System.currentTimeMillis();
        System.out.println(end - start);

        //第二种：parallelStreamAPI 多线程的
        long start1 = System.currentTimeMillis();
        nums.parallelStream().forEach(T_ParallelStream::isPrime);  //写法2：上面的带参的可以写成：T_ParallelStream::isPrime
        long end1 = System.currentTimeMillis();
        System.out.println(end1 - start1);
    }

    public static boolean isPrime(int num) {
        for (int i = 2; i <= num / 2; i++) {
            if (num % i == 0) return false;
        }
        return true;
    }
}
